﻿Imports log4net

Partial Class B10Popup
    Inherits System.Web.UI.Page

    Public ScriptTxt As String = ""
    Public dmax As String = ""
    Private Shared logger As ILog = LogManager.GetLogger("B10Popup")

    Protected Sub SaveBtn_Click(sender As Object, e As ImageClickEventArgs) Handles SaveBtn.Click
        Dim adapter As New B10DataSetTableAdapters.ProjectsTableAdapter
        Dim resultcheck = ""
        Dim PlanYear As String = Request("PlanYear")
        Dim FCCode As String

        If Request("mode") = 1 Then
            If WebCombo3.Value = "" Then
                Alert("กรุณาเลือก Fund Center")
                Exit Sub
            End If
            If ProjectCode.Text = "" Then
                Alert("กรุณากรอกรหัสโครงการ")
                Exit Sub
            Else
                resultcheck = CheckProjectCode(ProjectCode.Text)
            End If
            If ProjectName.Text = "" Then
                Alert("กรุณากรอกชื่อโครงการ")
                Exit Sub
            End If
            If ShortProj.Text = "" Then
                Alert("กรุณากรอกชื่อโครงการแบบสั้น")
                Exit Sub
            End If
            If PY1.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 1)
                Exit Sub
            End If
            If PY2.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 2)
                Exit Sub
            End If
            If PY3.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 3)
                Exit Sub
            End If
            If PY4.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 4)
                Exit Sub
            End If
            If IsNumeric(PY1.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 1 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY2.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 2 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY3.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 3 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY4.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 4 & " " & "เป็นตัวเลข")
                Exit Sub
            End If

            If resultcheck = "OK" Then
                If WebCombo3.Value = "" Or WebCombo3.Value Is Nothing Then
                    FCCode = ""
                Else
                    FCCode = WebCombo3.Value
                End If
                Dim counterx As Decimal = 0
                If FCCode = "" Then
                    counterx = adapter.CheckExist2Null(ProjectCode.Text, Val(PlanYear))
                Else
                    counterx = adapter.CheckExist2(ProjectCode.Text, Val(PlanYear), FCCode)
                End If

                If counterx > 0 Then
                    Alert("มีรหัสโครงการนี้ในระบบแล้ว ไม่สามารถสร้างซ้ำได้")
                    Exit Sub
                End If

                If FCCode = "" Then
                    adapter.InsertQuery(ProjectCode.Text, Val(Request("PlanYear")), "", ProjectName.Text, ShortProj.Text, Val(PY1.Text), Val(PY2.Text), Val(PY3.Text), Val(PY4.Text), Now(), Now(), Session("users"), Session("users"), Nothing, Nothing)
                Else
                    adapter.InsertQuery(ProjectCode.Text, Val(Request("PlanYear")), FCCode, ProjectName.Text, ShortProj.Text, Val(PY1.Text), Val(PY2.Text), Val(PY3.Text), Val(PY4.Text), Now(), Now(), Session("users"), Session("users"), FCCode, Request("PlanYear"))
                End If

                logger.Info("User " & Session("users") & " insert project name " & ProjectName.Text)
            Else
                Alert(resultcheck)
                Exit Sub
            End If
        ElseIf Request("mode") = 2 Then
            If WebCombo3.Value = "" Then
                Alert("กรุณาเลือก Fund Center")
                Exit Sub
            End If
            If ProjectName.Text = "" Then
                Alert("กรุณากรอกชื่อโครงการ")
                Exit Sub
            End If
            If ShortProj.Text = "" Then
                Alert("กรุณากรอกชื่อโครงการแบบสั้น")
                Exit Sub
            End If
            If PY1.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 1)
                Exit Sub
            End If
            If PY2.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 2)
                Exit Sub
            End If
            If PY3.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 3)
                Exit Sub
            End If
            If PY4.Text = "" Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 4)
                Exit Sub
            End If
            If IsNumeric(PY1.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 1 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY2.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 2 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY3.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 3 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            If IsNumeric(PY4.Text) = False Then
                Alert("กรุณากรอกประมาณการปี " & Request("PlanYear") + 4 & " " & "เป็นตัวเลข")
                Exit Sub
            End If
            adapter.UpdateQuery(ProjectName.Text, ShortProj.Text, Val(PY1.Text), Val(PY2.Text), Val(PY3.Text), Val(PY4.Text), Now(), Session("users"), Val(Request("ID")))

            logger.Info("User " & Session("users") & " update project name " & ProjectName.Text)
        End If
        Session("savedata") = WebCombo3.Value
        ScriptTxt = "<script>window.parent.TINY.box.hide();</script>"

    End Sub

    Sub Alert(ByVal texter As String)
        ScriptTxt = "<script>alert('" & texter & "')</script>"
    End Sub

    Protected Sub CancelBtn_Click(sender As Object, e As ImageClickEventArgs) Handles CancelBtn.Click
        ScriptTxt = "<script>window.parent.TINY.box.hide();</script>"
    End Sub

    Function CheckProjectCode(ByVal projcode As String) As String
        Dim result As String = ""
        Dim errors As Decimal = 0
        Dim errorText As String = " กรุณาตรวจสอบ "
        Dim PlanYear As String = Val(Val(Request("PlanYear"))).ToString
        If WebCombo3.Value = "" Then
            If projcode(0).ToString <> "P" And projcode(0).ToString <> "D" Then
                errorText += " รหัสโครงการต้องขึ้นต้นด้วย P หรือ D เท่านั้น " & " "
                errors = errors + 1
            End If
            If projcode.Substring(1, 2) <> PlanYear.Substring(2) Then

                errorText += " รหัสโครงการส่วนปี ต้องตรงกับปีประเมินเท่านั้น" & " "
                errors = errors + 1


            End If
            If projcode.Length > 12 Then
                errorText += " รหัสโครงการไม่สามารถยาวเกิน 12 ตัวอักษรได้ " & " "
                errors = errors + 1
            End If
        Else
            If projcode(0).ToString <> "P" And projcode(0).ToString <> "D" Then
                errorText += " รหัสโครงการต้องขึ้นต้นด้วย P หรือ D เท่านั้น " & " "
                errors = errors + 1
            End If
            If projcode.Length <> 5 Then
                errorText += " รหัสโครงการต้องมีความยาวที่ 5 ตัวอักษรเท่านั้น " & " "
                errors = errors + 1
            End If
        End If
        If errors = 0 Then
            Return "OK"
        Else
            Return errorText
        End If

    End Function

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Request("mode") = 1 Then
            RadioButton1.Enabled = True
            RadioButton2.Enabled = True
            RadioButton1.Attributes.Add("onClick", "Javascript:radioselect()")
            RadioButton2.Attributes.Add("onClick", "Javascript:radioselect()")
        Else
            RadioButton1.Enabled = False
            RadioButton2.Enabled = False
            RadioButton1.Attributes.Remove("onClick")
            RadioButton2.Attributes.Remove("onClick")
        End If
        If Not IsPostBack Then

            LabelPY1.Text = "แผนค่าใช้จ่ายปี " & Val(Request("PlanYear")) + 1
            LabelPY2.Text = "แผนค่าใช้จ่ายปี " & Val(Request("PlanYear")) + 2
            LabelPY3.Text = "แผนค่าใช้จ่ายปี " & Val(Request("PlanYear")) + 3
            LabelPY4.Text = "แผนค่าใช้จ่ายปี " & Val(Request("PlanYear")) + 4

            If Request("mode") = 1 Then
                PY1.Text = 0
                PY2.Text = 0
                PY3.Text = 0
                PY4.Text = 0
            Else
                WebCombo3.Enabled = False
                Dim adapter As New B10DataSetTableAdapters.ProjectsTableAdapter
                Dim data1 As New B10DataSet.ProjectsDataTable

                data1 = adapter.GetDataByID(Request("ID"))
                For Each row As B10DataSet.ProjectsRow In data1
                    If row.IsPlanYear1AmountNull = True Then
                        PY1.Text = 0
                    Else
                        PY1.Text = Val(row.PlanYear1Amount)
                    End If
                    If row.IsPlanYear2AmountNull = True Then
                        PY2.Text = 0
                    Else
                        PY2.Text = Val(row.PlanYear2Amount)
                    End If
                    If row.IsPlanYear3AmountNull = True Then
                        PY3.Text = 0
                    Else
                        PY3.Text = Val(row.PlanYear3Amount)
                    End If
                    If row.IsPlanYear4AmountNull = True Then
                        PY4.Text = 0
                    Else
                        PY4.Text = Val(row.PlanYear4Amount)
                    End If
                    If row.IsDescriptionNull = True Then
                        ProjectName.Text = ""
                    Else
                        ProjectName.Text = row.Description
                    End If
                    If row.IsShortDescriptionNull = True Then
                        ShortProj.Text = ""
                    Else
                        ShortProj.Text = row.ShortDescription

                    End If

                    ProjectCode.Text = row.ProjectCode
                    WebCombo3.Value = row.FundCenterCode

                    If Left(row.ProjectCode, 1) = "P" Then
                        RadioButton1.Checked = True
                        RadioButton2.Checked = False
                    Else
                        RadioButton2.Checked = True
                        RadioButton1.Checked = False
                    End If


                Next
                'Label1.Visible = False
                ProjectCode.Enabled = False
                ProjectCode.ReadOnly = True
            End If
        End If


    End Sub
    Protected Sub WebCombo3_InitializeDataSource(sender As Object, e As ISNet.WebUI.WebCombo.DataSourceEventArgs) Handles WebCombo3.InitializeDataSource
        Dim adap As New B10DataSetTableAdapters.B10fctrTableAdapter
        Dim dt As New B10DataSet.B10fctrDataTable
        Dim sql = ""
        Dim prefil As String = ""
        prefil = Session("prefilter")
        sql += " SELECT  fctr_view.FundCenterCode, FundCenters.Description, FundCenterHierarchies.Level,fctr_view.ParentFundCenter"
        sql += " , (SELECT ISNULL(MAX(ProjectCode),'') FROM Projects"
        sql += " WHERE LEFT(ProjectCode,1) = 'P' AND FundCenter_FundCenterCode = fctr_view.FundCenterCode AND FundCenter_PlanYear = fctr_view.PlanYear) AS MaxCodeP"
        sql += " , (SELECT ISNULL(MAX(ProjectCode),'') FROM Projects"
        sql += " WHERE LEFT(ProjectCode,1) = 'D' AND  FundCenter_FundCenterCode = fctr_view.FundCenterCode AND FundCenter_PlanYear = fctr_view.PlanYear) AS MaxCodeD"
        sql += " , fctr_view.PlanYear"
        sql += " FROM fctr_view INNER JOIN FundCenters"
        sql += " ON fctr_view.FundCenterCode = FundCenters.FundCenterCode"
        sql += " INNER JOIN FundCenterHierarchies ON fctr_view.FundCenterCode = FundCenterHierarchies.FundCenter_FundCenterCode"
        sql += " WHERE 1 = 1 "
        sql += " and USERNAME = '" & Session("users") & "' AND fctr_view.PlanYear = " & Val(Request("PlanYear")) & " AND FundCenters.PlanYear = " & Val(Request("PlanYear"))
        sql += " and FundCenterHierarchies.PlanYear = " & Val(Session("PlanYear")) & " "
        sql += " ORDER BY FundCenterCode ASC"
        adap.GetDataByFilter(dt, sql)

        'dt.Rows.Add("", "โครงการกลาง", "1", "0")
        dt.MaxCodePColumn.ReadOnly = False
        dt.MaxCodeDColumn.ReadOnly = False
        For Each item As B10DataSet.B10fctrRow In dt
            Dim numP As Integer
            Try
                numP = Val(item.MaxCodeP.Substring(3)) + 1
            Catch ex As Exception
                numP = 1
            End Try

            Dim textP As String = "P" & Right(item.PlanYear, 2) & numP.ToString.PadLeft(2, "0")
            item.MaxCodeP = textP

            Dim numD As Integer
            Try
                numD = Val(item.MaxCodeD.Substring(3)) + 1
            Catch ex As Exception
                numD = 1
            End Try
            Dim textD As String = "D" & Right(item.PlanYear, 2) & numD.ToString.PadLeft(2, "0")
            item.MaxCodeD = textD
        Next

        dt.DefaultView.Sort = "FundCenterCode"
        e.DataSource = dt
        If dt.Count = 1 Then
            WebCombo3.Value = dt.Item(0).FundCenterCode
            If Request("mode") = 1 Then
                ProjectCode.Text = dt.Item(0).MaxCodeP
                dmax = "code_maxP = '" & dt.Item(0).MaxCodeP & "';" & "code_maxD = '" & dt.Item(0).MaxCodeD & "';"
            End If

        End If
    End Sub
End Class
